Summary
Q ভাষা ও তার ডেটা টাইপ ও ভেরিয়েবলস
Q ভাষা, যা KDB+ ডাটাবেসের সাথে ব্যবহৃত হয়, বিভিন্ন ডেটা টাইপ ও ভেরিয়েবল সমর্থন করে। এর মধ্যে প্রধান ডেটা টাইপগুলো হলো:
- এন্টিজার (Integer): পূর্ণসংখ্যা, উদাহরণ: a: 10
- ফ্লোটিং পয়েন্ট (Floating Point): দশমিক সংখ্যা, উদাহরণ: x: 10.5
- টাইমস্ট্যাম্প (Timestamp): নির্দিষ্ট সময় প্রতিনিধিত্ব করে, উদাহরণ: t: 2024.11.16 10:30:00
- ডেট (Date): শুধুমাত্র তারিখ, উদাহরণ: d: 2024.11.16
- টাইম (Time): শুধুমাত্র সময়, উদাহরণ: t: 10:30:00
- লজিক্যাল (Logical): সত্য (1) বা মিথ্যা (0), উদাহরণ: a: 1 0 1 1
- সিম্বল (Symbol): স্ট্রিং টাইপ, উদাহরণ: s: `apple`orange`banana
- লিস্ট (List): বিভিন্ন ডেটা টাইপের উপাদান, উদাহরণ: lst: 1 2 3 4 5
- টেবিল (Table): একাধিক কলাম, উদাহরণ: table: (`name`age`city) ! (`John`Doe`Smith; 25 30 35; `NewYork`LA`Chicago)
ভেরিয়েবলস: Q ভাষায় ভেরিয়েবলগুলি ডেটা ধারণ করে এবং সেগুলির নামের মাধ্যমে অ্যাক্সেস করা যায়। ভেরিয়েবলগুলি সাধারণত একক অক্ষরের নাম দেওয়া হয়। উদাহরণ:
- ভেরিয়েবল ডিফাইন করা: a: 10
- মান পরিবর্তন: a: 50
- নতুন ভেরিয়েবল তৈরি: x: 5, y: 10, z: x + y
Q ভাষায় ভেরিয়েবলগুলি ডেটা টাইপের সাথে সম্পর্কিত এবং স্বয়ংক্রিয়ভাবে ডেটা টাইপ চিহ্নিত করে। Q ভাষায় ডেটা টাইপ ও ভেরিয়েবল কার্যকর প্রক্রিয়াকরণ এবং বিশ্লেষণের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।
Q ভাষা, যেটি KDB+ ডাটাবেসের সাথে ব্যবহৃত হয়, বিভিন্ন ধরনের ডেটা টাইপ এবং ভেরিয়েবল সমর্থন করে। Q ভাষায় ডেটা টাইপগুলি খুবই সাধারণ এবং শক্তিশালী, যা ডেটার প্রক্রিয়াকরণ এবং বিশ্লেষণ সহজ এবং দ্রুত করে তোলে।
এখানে Q ভাষার ডেটা টাইপস এবং ভেরিয়েবলস এর বিস্তারিত আলোচনা করা হলো।
১. Q ভাষায় ডেটা টাইপস
Q ভাষায় বিভিন্ন ধরনের ডেটা টাইপ রয়েছে, যার মধ্যে সংখ্যাগুলি, তারিখ, সময়, এবং লজিক্যাল মান সহ অন্যান্য ডেটার ধরন অন্তর্ভুক্ত। নীচে প্রধান ডেটা টাইপগুলো দেওয়া হলো:
- এন্টিজার (Integer)
Q ভাষায় পূর্ণসংখ্যা ডেটা টাইপে int বা i ব্যবহার করা হয়। এটি পূর্ণসংখ্যা হিসেবেই কাজ করে।
উদাহরণ:
a: 10
b: -5- ফ্লোটিং পয়েন্ট (Floating Point)
ফ্লোটিং পয়েন্ট সংখ্যাগুলি আসলে দশমিক সংখ্যার প্রতিনিধিত্ব করে, যেগুলি উচ্চ নির্ভুলতার সাথে গণনা করা হয়।
উদাহরণ:
x: 10.5
y: -2.5- টাইমস্ট্যাম্প (Timestamp)
Q ভাষায় টাইমস্ট্যাম্প (datetime) একটি বিশেষ ধরনের ডেটা টাইপ যা একটি নির্দিষ্ট সময় প্রতিনিধিত্ব করে। এটি সঠিক সময়ের হিসাব রাখে, যেমন বছর, মাস, দিন, সময় ইত্যাদি।
উদাহরণ:
t: 2024.11.16 10:30:00- ডেট (Date)
ডেট টাইপ ব্যবহার করে শুধুমাত্র তারিখের মান পাওয়া যায়, সময়ের কোনো মান থাকে না।
উদাহরণ:
d: 2024.11.16- টাইম (Time)
টাইম ডেটা টাইপে শুধু সময়ের মান থাকে (সেকেন্ডের ভাগে), তারিখের সাথে কোনো সম্পর্ক থাকে না।
উদাহরণ:
t: 10:30:00- লজিক্যাল (Logical)
লজিক্যাল টাইপটি দুইটি মান ধারণ করতে পারে: 1 (যা সত্য বা True এর প্রতিনিধিত্ব করে) এবং 0 (যা মিথ্যা বা False এর প্রতিনিধিত্ব করে)।
উদাহরণ:
a: 1 0 1 1- সিম্বল (Symbol)
সিম্বল একটি স্ট্রিং টাইপ যা সাধারণত ক্যাটালগ বা লেবেল হিসাবে ব্যবহৃত হয়।
উদাহরণ:
s: `apple`orange`banana- লিস্ট (List)
একটি লিস্ট বিভিন্ন ডেটা টাইপের উপাদান ধারণ করতে পারে এবং একে বিভিন্ন ডেটা টাইপের একটি গ্রুপ হিসাবে ব্যবহার করা হয়।
উদাহরণ:
lst: 1 2 3 4 5
symb_lst: `a`b`c`d- টেবিল (Table)
টেবিল একাধিক কলাম (লিস্টের মত) নিয়ে গঠিত, যেখানে প্রতিটি কলাম একটি নির্দিষ্ট ডেটা টাইপ ধারণ করে।
উদাহরণ:
table: (`name`age`city) ! (`John`Doe`Smith; 25 30 35; `NewYork`LA`Chicago)২. Q ভাষায় ভেরিয়েবলস (Variables)
Q ভাষায় ভেরিয়েবলগুলি ডেটা ধারণ করে এবং সেগুলির নামের মাধ্যমে ডেটাকে অ্যাক্সেস করা যায়। ভেরিয়েবলগুলি সাধারণত ছোট, একক অক্ষরের নাম দেওয়া হয়, তবে তারা আন্ডারস্কোরও থাকতে পারে।
- ভেরিয়েবল ডিফাইন করা
Q ভাষায় ভেরিয়েবল ডিফাইন করার জন্য শুধু সাইন : ব্যবহার করতে হয়। একে সাধারণত অ্যাসাইনমেন্ট অপারেটর বলা হয়।
উদাহরণ:
a: 10
b: 20
c: a + b / c এর মান হবে 30- ভেরিয়েবলগুলির মান পরিবর্তন করা
ভেরিয়েবলের মান নতুন মান দিয়ে আপডেট করা যায়।
উদাহরণ:
a: 50 / এখন a এর মান হবে 50- নতুন ভেরিয়েবল তৈরি করা
একটি নতুন ভেরিয়েবল তৈরি করতে নতুন নাম দিয়ে ডেটা অ্যাসাইন করতে হয়।
উদাহরণ:
x: 5
y: 10
z: x + y / z এর মান হবে 15৩. Q ভাষায় ভেরিয়েবল এবং ডেটা টাইপের সম্পর্ক
Q ভাষায় ভেরিয়েবলগুলি ডেটা টাইপের সাথে সম্পর্কিত। আপনি যখন একটি ভেরিয়েবল অ্যাসাইন করেন, তখন Q ভাষা স্বয়ংক্রিয়ভাবে তার ডেটা টাইপ চিহ্নিত করে এবং তা ভবিষ্যতে যে ডেটা টাইপের সাথে কাজ করবে সে অনুযায়ী গঠন করে।
উদাহরণ:
a: 2024.11.16 10:30:00 / টাইমস্ট্যাম্প
b: 5.4 / ফ্লোট
c: `apple / সিম্বলসারসংক্ষেপ
Q ভাষায় ডেটা টাইপস এবং ভেরিয়েবলস অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী উপাদান। ডেটা টাইপগুলি যেমন পূর্ণসংখ্যা, দশমিক সংখ্যা, টাইমস্ট্যাম্প, ডেট, টাইম ইত্যাদি বিভিন্ন ধরনের ডেটার সাথে কাজ করতে সহায়তা করে। ভেরিয়েবলগুলি ডেটার মান সংরক্ষণ এবং পরবর্তীতে তাদের সাথে কাজ করার জন্য ব্যবহৃত হয়। Q ভাষায় ডেটার কার্যকর প্রক্রিয়াকরণ এবং বিশ্লেষণ সক্ষম করতে এই ডেটা টাইপস এবং ভেরিয়েবলস অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে।
Q ভাষায় scalar ডেটা টাইপস এমন ধরনের ডেটা যা একক মান ধারণ করে এবং সাধারণত গাণিতিক বা যুক্তির সাথে সম্পর্কিত। এই ডেটা টাইপগুলি প্রোগ্রামে একক ইউনিটের জন্য ব্যবহৃত হয়। নিচে Integer, Float, Char, এবং Boolean ডেটা টাইপগুলোর সম্পর্কে বিস্তারিত আলোচনা করা হলো:
১. Integer (int)
Integer বা পূর্ণসংখ্যা এমন ডেটা টাইপ যা শুধুমাত্র পূর্ণসংখ্যা মান ধারণ করে, যেমন ১, ২, ৩ ইত্যাদি। Q ভাষায় Integer টাইপের ডেটা সাধারণত কোন গাণিতিক গণনা বা গণনা সমীকরণে ব্যবহৃত হয়।
উদাহরণ:
a: 5 / একটি integer মান
b: -10 / একটি নেতিবাচক integer মানInteger টাইপের ডেটা Q ভাষায় খুবই গুরুত্বপূর্ণ কারণ এটি কৌশলগতভাবে সঠিক ফলাফল বের করতে গণনা সমীকরণে ব্যবহার করা হয়।
২. Float (ফ্লোট)
Float বা দশমিক সংখ্যা এমন ডেটা টাইপ যা দশমিক বা ভগ্নাংশ মান ধারণ করে, যেমন ৫.৩৪, ৭.২ ইত্যাদি। Float টাইপ ডেটা সাধারণত উচ্চমানের গণনা এবং গাণিতিক বিশ্লেষণে ব্যবহৃত হয়, যেখানে পূর্ণসংখ্যা যথেষ্ট নয়।
উদাহরণ:
x: 3.14 / একটি ফ্লোট মান
y: -0.007 / একটি নেতিবাচক ফ্লোট মানFloat ডেটা টাইপের মাধ্যমে আপনি সুনির্দিষ্ট দশমিক মান সঠিকভাবে পরিচালনা করতে পারবেন, যা গণনা এবং পরিসংখ্যান বিশ্লেষণে কাজে আসে।
৩. Char (Character)
Char বা চরিত্র একটি একক অক্ষর বা সিম্বল ধারণ করে। এটি একক স্ট্রিং বা অক্ষর হিসেবে ব্যবহৃত হয়, যেমন 'a', 'b', '1', বা '#'. Char ডেটা টাইপ মূলত পাঠ্য বা সিম্বল সংরক্ষণ এবং ম্যানিপুলেট করতে ব্যবহৃত হয়।
উদাহরণ:
letter: "a" / একটি চরিত্র
symbol: "$" / একটি বিশেষ সিম্বলChar টাইপ ডেটা টেক্সট বা বিশেষ চিহ্নের জন্য ব্যবহৃত হয় এবং যখন ছোট আকারে ডেটা সংরক্ষণ করতে হয়, তখন এটি ব্যবহার করা হয়।
৪. Boolean (Boolean)
Boolean ডেটা টাইপ দুটি মান ধারণ করে: True (সত্য) বা **False (মিথ্যা)**। এটি সাধারণত শর্তসাপেক্ষ বিবৃতি বা লজিক্যাল সিদ্ধান্ত গ্রহণে ব্যবহৃত হয়, যেখানে কিছু মান সত্য বা মিথ্যা হতে পারে।
উদাহরণ:
isActive: 1b / সত্য (True)
isComplete: 0b / মিথ্যা (False)Q ভাষায় Boolean মান ১ (True) অথবা ০ (False) দিয়ে সংজ্ঞায়িত করা হয়। Boolean টাইপের ডেটা লজিক্যাল পরীক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ, যেমন if স্টেটমেন্ট বা শর্তপূর্ণ ফিল্টারিং।
সারসংক্ষেপ
Q ভাষায় scalar ডেটা টাইপস এমন ডেটা যা একক মান ধারণ করে এবং প্রধানত গাণিতিক, লজিক্যাল বা টেক্সট ভিত্তিক ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Q ভাষায় মূল scalar ডেটা টাইপগুলো হল:
- Integer (int): পূর্ণসংখ্যা, যেমন ৫, -১০
- Float: দশমিক সংখ্যা, যেমন ৩.১৪, -০.৭
- Char: একক চরিত্র বা সিম্বল, যেমন 'a', '#'
- Boolean: সত্য (True) বা মিথ্যা (False), যেমন 1b (True), 0b (False)
এই scalar ডেটা টাইপগুলি ব্যবহার করে আপনি Q ভাষায় ডেটা পরিচালনা, গণনা এবং বিশ্লেষণ করতে পারবেন।
Q ভাষায় ডেটা ম্যানিপুলেশন করার জন্য Lists, Dictionaries, এবং Tables প্রধান ডেটা স্ট্রাকচার হিসেবে ব্যবহৃত হয়। এগুলোর প্রতিটিরই বিশেষ ভূমিকা রয়েছে এবং বিভিন্ন পরিস্থিতিতে এগুলো আলাদা আলাদা সুবিধা প্রদান করে।
১. Lists (তালিকা)
Lists হল এক বা একাধিক ডেটা উপাদান ধারণ করার জন্য ব্যবহৃত ডেটা স্ট্রাকচার। Q ভাষায় lists একটি গুরুত্বপূর্ণ ভূমিকা পালন করে কারণ এটি বিভিন্ন ডেটা টাইপ ধারণ করতে পারে, যেমন সংখ্যা, স্ট্রিং, ডেটা, এবং অন্যান্য।
তালিকা তৈরির উদাহরণ:
list1: 1 2 3 4 5 / একটি ইন্টিজার তালিকা
list2: "apple" "banana" "cherry" / একটি স্ট্রিং তালিকা
list3: 1.5 2.5 3.5 / একটি ফ্লোট তালিকাতালিকার উপাদান অ্যাক্সেস:
list1[2] / আউটপুট: 2, 2য় উপাদান
list2[1] / আউটপুট: "banana", 1য় উপাদানতালিকায় উপাদান যোগ করা:
list1: list1, 6 / তালিকায় 6 যোগ করাতালিকায় উপাদান মুছে ফেলা:
list1: list1 except 2 / তালিকা থেকে 2 নম্বর ইনডেক্সের উপাদান মুছে ফেলাতালিকার দৈর্ঘ্য:
count list1 / আউটপুট: 6, তালিকার মোট উপাদান সংখ্যা২. Dictionaries (ডিকশনারি)
Dictionaries হল এমন একটি ডেটা স্ট্রাকচার, যেখানে একটি কী এবং ভ্যালু পেয়ার থাকে। এটি খুবই উপকারী যখন আপনি কোনও তথ্যের সাথে সম্পর্কিত মান খুঁজে বের করতে চান।
ডিকশনারি তৈরি:
dict1: `name`age! ("John" 25) / কী-ভ্যালু পেয়ার: name -> John, age -> 25ডিকশনারির মান অ্যাক্সেস:
dict1[`name] / আউটপুট: "John", name এর মান
dict1[`age] / আউটপুট: 25, age এর মানডিকশনারিতে নতুন কী-ভ্যালু পেয়ার যোগ করা:
dict1: dict1, `city! "New York" / ডিকশনারিতে city কী যোগ করাডিকশনারি থেকে মান মুছে ফেলা:
dict1: dict1 except `age / age কী মুছে ফেলাডিকশনারির সব কী:
keys dict1 / আউটপুট: `name `cityডিকশনারির সব মান:
dict1 each keys dict1 / আউটপুট: ("John" "New York")৩. Tables (টেবিল)
Tables হল Q ভাষায় ডেটা সংগঠনের অন্যতম প্রধান ডেটা স্ট্রাকচার। এটি একটি রিলেশনাল ডেটাবেস টেবিলের মতো কাজ করে যেখানে বিভিন্ন কলাম থাকে এবং প্রতিটি কলামের মধ্যে ডেটা থাকে। Q তে টেবিল ব্যবহার করা হয় ডেটার সঞ্চয় এবং বিভিন্ন ডেটার ওপর কুইরি বা বিশ্লেষণ করার জন্য।
টেবিল তৈরি:
table1: (`id`name!((1 2 3); "Alice" "Bob" "Charlie"))এখানে id এবং name হল কলাম, এবং তাদের মানগুলো যথাক্রমে (1 2 3) এবং ("Alice" "Bob" "Charlie")।
টেবিলের ডেটা সিলেক্ট করা:
select from table1 where id = 2 / আউটপুট: id name
/ 2 Bobটেবিলের সব ডেটা দেখানো:
table1 / আউটপুট: id name
/ 1 Alice
/ 2 Bob
/ 3 Charlieটেবিলের নতুন কলাম যোগ করা:
table1: table1, `age! (25 30 35) / age কলাম যোগ করাটেবিলের ডেটা আপডেট করা:
update name: "David" from table1 where id = 1 / id = 1 এর নাম David করতে হবেটেবিল থেকে ডেটা ডিলিট করা:
delete from table1 where id = 3 / id = 3 এর রেকর্ড ডিলিট করাগ্রুপিং এবং অ্যাগ্রিগেশন:
select avg age by name from table1 / নাম অনুসারে বয়সের গড় বের করাএকাধিক টেবিল একত্রিত করা:
table2: (`id`name!((4 5); "David" "Eve"))
table1: table1 lj `id xkey table2 / টেবিল দুটি যুক্ত করাসারসংক্ষেপ
- Lists: একাধিক উপাদান ধারণ করার জন্য ব্যবহৃত হয়, যেগুলোর মধ্যে সংখ্যা, স্ট্রিং, ডেটা বা অন্য ডেটা টাইপ থাকতে পারে।
- Dictionaries: কী-ভ্যালু পেয়ার ধারণ করে এবং এর মাধ্যমে দ্রুত ডেটা অ্যাক্সেস করা সম্ভব।
- Tables: সেগুলি রিলেশনাল ডেটাবেসের মতো কলাম ভিত্তিক ডেটা স্ট্রাকচার যা ডেটার বিশ্লেষণ ও কুইরি করার জন্য ব্যবহৃত হয়।
এই তিনটি ডেটা স্ট্রাকচার Q ভাষায় ডেটা ম্যানিপুলেশন, বিশ্লেষণ এবং ডেটা প্রক্রিয়াকরণে খুবই গুরুত্বপূর্ণ ভূমিকা পালন করে এবং এগুলি ব্যবহার করে দ্রুত এবং কার্যকর কোড লেখা সম্ভব।
KDB+ এবং Q ভাষায় Sym, Timestamp, এবং Time-Series ডেটা টাইপস খুবই গুরুত্বপূর্ণ, বিশেষত যখন ডেটার সাথে বিশ্লেষণ এবং ডেটাবেস পরিচালনা করা হয়। এই টাইপগুলির মধ্যে রয়েছে বিশেষ ধরনের ডেটা, যা KDB+ কে টাইম-সিরিজ ডেটা বিশ্লেষণের জন্য অত্যন্ত শক্তিশালী করে তোলে। নিচে এই ডেটা টাইপগুলির বিস্তারিত আলোচনা করা হলো।
১. Sym (সিম্বল)
Sym একটি বিশেষ ধরনের ডেটা টাইপ যা KDB+ তে স্ট্রিং বা টেক্সটকে একটি সিম্বল আকারে সংরক্ষণ করে। সিম্বল সাধারণত একটি আইডেন্টিফায়ার বা লেবেল হিসেবে ব্যবহৃত হয়, এবং এটি খুবই কার্যকরী যখন ডেটাবেসে স্ট্রিংয়ের সাথে কাজ করতে হয়। সিম্বল টাইপ স্ট্রিং-এর চেয়ে দ্রুত এবং কম মেমরি ব্যবহার করে।
উদাহরণ:
symbol1: `apple / একটি সিম্বল
symbol2: `banana / আরেকটি সিম্বলএখানে apple এবং banana দুটি সিম্বল এবং এগুলি স্ট্রিং-এর তুলনায় দ্রুত এবং মেমরি-অ্যাপ্টিমাইজড।
সিম্বল ব্যবহার:
symbols: `apple`banana`cherry / একাধিক সিম্বলসিম্বলকে সাধারণত ডেটা টেবিলের কলাম হিসেবে বা আইডেন্টিফায়ার হিসেবে ব্যবহৃত হয়।
data: (`apple`banana`cherry) ! (100 200 300) / একটি ডিকশনারি তৈরি করাএখানে, data একটি ডিকশনারি যেখানে apple, banana, এবং cherry সিম্বল হিসেবে ব্যবহৃত হয়েছে এবং তাদের মান যথাক্রমে ১০০, ২০০, এবং ৩০০।
২. Timestamp (টাইমস্ট্যাম্প)
Timestamp KDB+ এর আরেকটি গুরুত্বপূর্ণ ডেটা টাইপ, যা নির্দিষ্ট সময় বা তারিখকে প্রতিনিধিত্ব করে। এটি বিশেষভাবে টাইম-সিরিজ ডেটা বিশ্লেষণে ব্যবহৃত হয়, যেখানে ডেটার সাথে সময় সম্পর্কিত তথ্য সংরক্ষণ করা হয়। টাইমস্ট্যাম্প সাধারণত yyyy.mm.dd hh:mm:ss ফর্ম্যাটে লেখা হয়।
উদাহরণ:
t: 2024.11.16 10:00:00 / একটি টাইমস্ট্যাম্প তৈরি করাএখানে t একটি টাইমস্ট্যাম্প যা 2024.11.16 10:00:00 সময়ের প্রতিনিধিত্ব করে।
টাইমস্ট্যাম্প সহ ডেটা:
timestamps: 2024.11.16 10:00:00 2024.11.16 10:01:00 2024.11.16 10:02:00 / একাধিক টাইমস্ট্যাম্পএটি তিনটি টাইমস্ট্যাম্পের একটি লিস্ট তৈরি করবে।
৩. Time-Series ডেটা টাইপ
Time-Series ডেটা হলো এমন ধরনের ডেটা যা সময়ের সাথে সম্পর্কিত এবং নিয়মিত বা নির্দিষ্ট সময় অন্তর পরিমাপ করা হয়। KDB+ বিশেষভাবে টাইম-সিরিজ ডেটা প্রক্রিয়াকরণের জন্য ডিজাইন করা হয়েছে এবং এটি একাধিক টাইমস্ট্যাম্প সহ ডেটা সংগ্রহ এবং বিশ্লেষণ করতে সক্ষম।
টাইম-সিরিজ ডেটা ব্যবহার:
এখন, Timestamp এবং Sym টাইপের ডেটার সাহায্যে একটি টাইম-সিরিজ তৈরি করা যাক। উদাহরণস্বরূপ, একটি স্টক মার্কেটের ডেটা যেখানে প্রতি মিনিটে স্টকের দাম এবং টাইমস্ট্যাম্প রয়েছে।
t: 2024.11.16 10:00:00 2024.11.16 10:01:00 2024.11.16 10:02:00 / টাইমস্ট্যাম্প
prices: 100.5 101.0 101.5 / স্টকের দাম
time_series: (t; prices) / টাইম-সিরিজ তৈরি করাএখানে time_series একটি টাইম-সিরিজ ডেটা তৈরি করবে, যেখানে t (টাইমস্ট্যাম্প) এবং prices (স্টকের দাম) রয়েছে।
টাইম-সিরিজ বিশ্লেষণ:
আপনি সহজেই টাইম-সিরিজ ডেটার উপর কুইরি বা বিশ্লেষণ চালাতে পারেন। যেমন:
select avg prices by date from time_seriesএটি প্রতিটি দিনের জন্য স্টক দাম (প্রাইস) এর গড় (average) হিসাব করবে।
Time-Series ডেটা এবং টেবিল
KDB+ তে Time-Series ডেটা সাধারণত একটি টেবিল হিসেবে সংগঠিত হয়, যেখানে Timestamp এবং অন্যান্য মান (যেমন প্রাইস, ভলিউম) একটি রেকর্ডের অংশ হিসেবে সংরক্ষিত থাকে।
উদাহরণ:
table: (`time`price) ! (2024.11.16 10:00:00 2024.11.16 10:01:00 2024.11.16 10:02:00; 100.5 101.0 101.5)এখানে একটি টেবিল তৈরি করা হয়েছে যেখানে time এবং price দুটি কলাম রয়েছে।
টাইম-সিরিজ বিশ্লেষণের জন্য কুইরি:
select avg price from table where time within 2024.11.16 10:00:00 2024.11.16 10:02:00এটি টাইম-সিরিজের মধ্যে গড় প্রাইস হিসাব করবে, যেখানে টাইমস্ট্যাম্প ২০২৪.১১.১৬ ১০:০০:০০ থেকে ১০:০২:০০ এর মধ্যে থাকবে।
সারসংক্ষেপ
- Sym হলো একটি স্ট্রিং বা টেক্সট ডেটা যা সিম্বল আকারে সংরক্ষণ করা হয় এবং এটি দ্রুত এবং কম মেমরি ব্যবহৃত হয়।
- Timestamp হলো এমন একটি ডেটা টাইপ যা নির্দিষ্ট সময় বা তারিখকে প্রতিনিধিত্ব করে এবং টাইম-সিরিজ ডেটার জন্য অপরিহার্য।
- Time-Series Data হল এমন ডেটা যা সময়ের সাথে সম্পর্কিত এবং এটি টেবিলের আকারে টাইমস্ট্যাম্পের সাথে ব্যবহৃত হয়।
এই ডেটা টাইপগুলি KDB+ কে টাইম-সিরিজ বিশ্লেষণ এবং দ্রুত ডেটা প্রসেসিংয়ের জন্য অত্যন্ত উপযুক্ত করে তোলে।
ভেরিয়েবল ডিক্লারেশন এবং ইনিশিয়ালাইজেশন প্রোগ্রামিংয়ের মৌলিক ধারণা। ভেরিয়েবল হল একটি মেমরি স্থান যা ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। প্রোগ্রামে ভেরিয়েবল ডিক্লারেশন এবং ইনিশিয়ালাইজেশন দুটি আলাদা ধাপ।
১. Variable Declaration (ভেরিয়েবল ডিক্লারেশন)
ভেরিয়েবল ডিক্লারেশন হল প্রোগ্রামে একটি ভেরিয়েবলের অস্তিত্ব ঘোষণা করা, যেখানে ভেরিয়েবলটির নাম এবং এর ধরনের (data type) উল্লেখ করা হয়। এতে ভেরিয়েবলটির জন্য মেমরি স্থান নির্ধারণ করা হয়, তবে এর মান নির্ধারিত হয় না।
ভেরিয়েবল ডিক্লারেশনের উদাহরণ (C ভাষায়):
int num; // Integer টাইপের ভেরিয়েবল ডিক্লেয়ার করা হয়েছে, তবে এর মান নির্ধারণ করা হয়নি
float price; // Float টাইপের ভেরিয়েবল ডিক্লেয়ার করা হয়েছে২. Variable Initialization (ভেরিয়েবল ইনিশিয়ালাইজেশন)
ভেরিয়েবল ইনিশিয়ালাইজেশন হল ভেরিয়েবলটির মান নির্ধারণ করা। এটি সাধারনত ভেরিয়েবল ডিক্লারেশনের পরই করা হয়, তবে ভেরিয়েবল ডিক্লারেশনের সাথে একযোগে ইনিশিয়ালাইজেশনও করা যেতে পারে।
ভেরিয়েবল ইনিশিয়ালাইজেশনের উদাহরণ (C ভাষায়):
int num = 10; // num ভেরিয়েবলটি ১০ দিয়ে ইনিশিয়ালাইজ করা হয়েছে
float price = 25.5; // price ভেরিয়েবলটি ২৫.৫ দিয়ে ইনিশিয়ালাইজ করা হয়েছে৩. Declaration এবং Initialization একসাথে
কিছু ভাষায় ডিক্লারেশন এবং ইনিশিয়ালাইজেশন একসাথে করা যায়, যেমন:
int age = 25; // একসাথে ডিক্লেয়ার এবং ইনিশিয়ালাইজ করা হয়েছেএখানে, age নামক ভেরিয়েবলটি ডিক্লেয়ার করা হয়েছে এবং সাথে সাথে তার মান ২৫ সেট করা হয়েছে।
বিভিন্ন প্রোগ্রামিং ভাষায় ভেরিয়েবল ডিক্লারেশন এবং ইনিশিয়ালাইজেশন
১. C ভাষায়:
int x = 5; // Integer ভেরিয়েবল x ডিক্লেয়ার এবং ইনিশিয়ালাইজ
float y = 3.14; // Float ভেরিয়েবল y ডিক্লেয়ার এবং ইনিশিয়ালাইজ২. Java ভাষায়:
int x = 5; // Integer ভেরিয়েবল x ডিক্লেয়ার এবং ইনিশিয়ালাইজ
String name = "John"; // String ভেরিয়েবল name ডিক্লেয়ার এবং ইনিশিয়ালাইজ৩. Python ভাষায়:
Python এ ডেটা টাইপ ডিক্লেয়ার করার প্রয়োজন নেই, ভেরিয়েবল ডিক্লেয়ার ও ইনিশিয়ালাইজেশন একসাথে হয়।
x = 5 // x ভেরিয়েবলটি ৫ দিয়ে ইনিশিয়ালাইজ করা হয়েছে
name = "John" // name ভেরিয়েবলটি "John" দিয়ে ইনিশিয়ালাইজ করা হয়েছেসারসংক্ষেপ
- ভেরিয়েবল ডিক্লারেশন: এটি ভেরিয়েবলের নাম এবং তার ডেটা টাইপ নির্ধারণ করে, তবে ভেরিয়েবলটির মান নির্ধারণ করা হয় না।
- ভেরিয়েবল ইনিশিয়ালাইজেশন: এটি ভেরিয়েবলটির মান নির্ধারণ করে, যাতে প্রোগ্রামে ডেটা সংরক্ষণ করা যায়।
যতটা সম্ভব, ভেরিয়েবল ডিক্লারেশন এবং ইনিশিয়ালাইজেশন একসাথে করার মাধ্যমে কোডের স্বচ্ছতা ও কার্যকারিতা বাড়ানো যায়।
Read more